Proposal by Armando Perico for Seaside tools

Proposed by Armando Perico (profile, biography) Don't forget to submit this proposal to official Google Melange site too!


The main goal is to develop a basic network based environment that allows many developers to be working simultaneously on the same image.

This will be a client-server based application where a server will receive changes incoming from the developers participating on the session.

Methodology

Basically Seaside with Comet, but the point here will be to find out which techniques will best fit to synchronize text(code) coming from multiply developers.

Milestones:

Phase 1: create a basic environment to test and follow the changes

  •  (~14 days) develop a client-server structure where the developers can send and read messages
    •  the messages might be simple text messages or even changes in the code (objects)
    •  at this point the developers could be able to join a session and watch a list of changes from every developer participating of the session.
  •  (~7 days) develop a simple view that synchronizes the messages from the server based on the timestamps
    • this is not our final goal, but for a first step it fills part of our target, synchronize everything properly, at this point we should also get some wrong results.

Phase 2:

  •   (~14 to 28 days) Once we have a basic structure prepared, we can start explore in which technique would be the best in order synchronize the text.
    • here we'll also need to handle a "mutex" features like:
      • if the developers are working on different classes or methods -> no problem
      • if they are working together on the same method -> mutual exclusion

      (and they should also be notified about someone else working on the same method)

  •  
    • this step would be fully related with research and test cases
    •  the next step depend exclusively from this phase.

Phase 3:

  •  (~15 days up to the end) Once found a good strategy to synchronize the code, we can start implementing it in order to generate a "Change list" file that could be compiled to real objects.

The major risks here should happens when the application tries to synchronize the list of changes from the server into the current session (image), we need to be aware of every change in the code of every developer, be able to synchronized the changes correctly.

My Biography: http://gsoc2010.esug.org/armando-perico/biography
The project: http://gsoc2010.esug.org/projects/seaside-tools




Updated: 9.4.2010